/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package eloma.classe.cat52;

import camada.bancodedados.conexao.Conexao;
import camada.bancodedados.daoimplemente.cat52.RegistrosEDAOImpl;
import eloma.classe.cat52.registro.RegistroE00;
import eloma.classe.cat52.registro.RegistroE01;
import eloma.classe.cat52.registro.RegistroE02;
import eloma.classe.cat52.registro.RegistroE12;
import eloma.classe.cat52.registro.RegistroE13;
import eloma.classe.cat52.registro.RegistroE14;
import eloma.classe.cat52.registro.RegistroE15;
import eloma.classe.cat52.registro.RegistroE16;
import eloma.classe.cat52.registro.RegistroE21;
import eloma.classe.cat52.registro.RegistroEAD;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.JTextArea;
import org.jdesktop.swingx.JXHyperlink;
import org.jdesktop.swingx.error.ErrorInfo;
import utilitarios.erros.MessagemErro;

/**
 *
 * @author GEMADA
 */
public class RunnableImportacaoCat52 extends Thread {

    Map<String, String> listaDuplicados = new HashMap<String, String>();
    //List<String> listaDuplicados = new ArrayList<String>();
    List<String> listaE00 = new ArrayList<>();
    List<String> listaE01 = new ArrayList<>();
    List<String> listaE02 = new ArrayList<String>();
    List<String> listaE12 = new ArrayList<String>();
    List<String> listaE13 = new ArrayList<String>();
    List<String> listaE14 = new ArrayList<String>();
    List<String> listaE15 = new ArrayList<String>();
    List<String> listaE16 = new ArrayList<String>();
    List<String> listaE21 = new ArrayList<String>();
    List<String> listaEAD = new ArrayList<>();
    SimpleDateFormat formatDate = new SimpleDateFormat("yyyyddMM");
    SimpleDateFormat formatTime = new SimpleDateFormat("hhmmss");
    RegistroE00 registroE00 = new RegistroE00();
    RegistroE01 registroE01 = new RegistroE01();
    RegistroE02 registroE02 = new RegistroE02();
    List<RegistroE12> listaRegistroE12 = new ArrayList<RegistroE12>();
    List<RegistroE13> listaRegistroE13 = new ArrayList<RegistroE13>();
    List<RegistroE14> listaRegistroE14 = new ArrayList<RegistroE14>();
    List<RegistroE15> listaRegistroE15 = new ArrayList<RegistroE15>();
    List<RegistroE16> listaRegistroE16 = new ArrayList<RegistroE16>();
    List<RegistroE21> listaRegistroE21 = new ArrayList<RegistroE21>();
    RegistroEAD registroEAD = new RegistroEAD();
    RegistrosEDAOImpl daoCat = new RegistrosEDAOImpl();
    List<String> listaArquivo = null;
    String idRegistroE01 = null;
    JLabel labelResultados;
    JProgressBar progressBarAtividade1;
    JProgressBar progressBarAtividade2;
    JXHyperlink btDuplicado;
    JTextArea txtAreaErros;
    JTextArea txtAreaDuplicados;
    int idImportacaoCat = 0;
    private static Connection con;

    public void setStringArquivo(List<String> listaArquivo) {
        this.listaArquivo = listaArquivo;
    }

    public Map<String, String> getListaDuplicados() {
        return listaDuplicados;
    }

    public void setIdImportacaoCat(int idImportacaoCat) {
        this.idImportacaoCat = idImportacaoCat;
    }

    @Override
    public void run() {

        try {

            int quantidade = listaArquivo.size();

            labelResultados.setText("Importação Cat52: Quantidade de Arquivos Sendo Processado = " + quantidade + " .");
            progressBarAtividade1.setValue(15);
            progressBarAtividade2.setValue(100);

            for (String arquivo : listaArquivo) {

                /*
                 * Limpas as listas
                 */
                listaE00.clear();
                listaE01.clear();
                listaE02.clear();
                listaE12.clear();
                listaE13.clear();
                listaE14.clear();
                listaE15.clear();
                listaE16.clear();
                listaE21.clear();
                listaEAD.clear();
                registroE00 = new RegistroE00();
                registroE01 = new RegistroE01();
                registroE02 = new RegistroE02();
                listaRegistroE12.clear();
                listaRegistroE13.clear();
                listaRegistroE14.clear();
                listaRegistroE15.clear();
                listaRegistroE16.clear();
                listaRegistroE21.clear();

                quantidade = quantidade - 1;

                FileReader arq = new FileReader(arquivo);
                BufferedReader lerArq = new BufferedReader(arq);

                String linha = lerArq.readLine();

                while (linha != null) {

                    labelResultados.setText("Importação Cat52: Capturando Linhas Arquivo - " + arquivo);
                    progressBarAtividade1.setValue(19);

                    if ("E00".equals(linha.substring(0, 3))) {
                        listaE00.add(linha);
                    }

                    if ("E01".equals(linha.substring(0, 3))) {
                        listaE01.add(linha);
                    }

                    if ("E02".equals(linha.substring(0, 3))) {
                        listaE02.add(linha);
                    }

                    if ("E12".equals(linha.substring(0, 3))) {
                        listaE12.add(linha);
                    }

                    if ("E13".equals(linha.substring(0, 3))) {
                        listaE13.add(linha);
                    }

                    if ("E14".equals(linha.substring(0, 3))) {
                        listaE14.add(linha);
                    }

                    if ("E15".equals(linha.substring(0, 3))) {
                        listaE15.add(linha);
                    }

                    if ("E16".equals(linha.substring(0, 3))) {
                        listaE16.add(linha);
                    }

                    if ("E21".equals(linha.substring(0, 3))) {
                        listaE21.add(linha);
                    }

                    if ("EAD".equals(linha.substring(0, 3))) {
                        listaEAD.add(linha);
                    }

                    linha = lerArq.readLine();
                }

                arq.close();
               
                montaE00(listaE00);
                daoCat.setProgressBar(progressBarAtividade2);
                daoCat.setLabelResultados(labelResultados);

                labelResultados.setText("Importação Cat52: Montando Registro E01.");
                progressBarAtividade1.setValue(25);

                progressBarAtividade2.setValue(10);
                montaE01(listaE01);
                daoCat.inserirRegistroE01(registroE01);
                progressBarAtividade2.setValue(100);

                labelResultados.setText("Importação Cat52: Montando e Inserindo Registro E02.");
                progressBarAtividade1.setValue(35);
                progressBarAtividade2.setValue(10);

                montaE02(listaE02);
                daoCat.inserirRegistroE02(registroE02);
                progressBarAtividade2.setValue(100);

                labelResultados.setText("Importação Cat52: Montando e Inserindo Registro E12.");
                progressBarAtividade1.setValue(45);
                progressBarAtividade2.setValue(10);

                montaE12(listaE12);
                daoCat.inserirRegistroE12(listaRegistroE12);
                progressBarAtividade2.setValue(100);

                
                labelResultados.setText("Importação Cat52: Montando e Inserindo Registro E13.");
                progressBarAtividade1.setValue(55);
                progressBarAtividade2.setValue(10);

                montaE13(listaE13);
                daoCat.inserirRegistroE13(listaRegistroE13);
                progressBarAtividade2.setValue(100);

                labelResultados.setText("Importação Cat52: Montando e Inserindo Registro E14.");
                progressBarAtividade1.setValue(65);
                progressBarAtividade2.setValue(10);

                montaE14(listaE14);
                daoCat.inserirRegistroE14(listaRegistroE14);
                progressBarAtividade2.setValue(100);

                labelResultados.setText("Importação Cat52: Montando e Inserindo Registro E15.");
                progressBarAtividade1.setValue(75);
                progressBarAtividade2.setValue(10);

                montaE15(listaE15);
                daoCat.inserirRegistroE15(listaRegistroE15);
                progressBarAtividade2.setValue(100);

                labelResultados.setText("Importação Cat52: Montando e Inserindo Registro E16.");
                progressBarAtividade1.setValue(85);
                progressBarAtividade2.setValue(10);

                montaE16(listaE16);
                daoCat.inserirRegistroE16(listaRegistroE16);
                progressBarAtividade2.setValue(100);

                labelResultados.setText("Importação Cat52: Montando e Inserindo Registro E21.");
                progressBarAtividade1.setValue(95);
                progressBarAtividade2.setValue(10);

                montaE21(listaE21);
                daoCat.inserirRegistroE21(listaRegistroE21);
                progressBarAtividade2.setValue(100);

                labelResultados.setText("Importação Cat52: Montando e Inserindo Registro EAD.");
                progressBarAtividade1.setValue(92);
                progressBarAtividade2.setValue(10);

                montaEAD(listaEAD);
                daoCat.inserirRegistroEAD(registroEAD);
                progressBarAtividade2.setValue(100);

                labelResultados.setText("Importação Cat52: Alterando Arquivo.");
                progressBarAtividade1.setValue(96);
                progressBarAtividade2.setValue(10);
                
                con = Conexao.getCon();

                con.commit();
                
                File myFile = new File(arquivo);
                progressBarAtividade2.setValue(30);
                myFile.renameTo(new File(arquivo + "_IN"));
                progressBarAtividade2.setValue(50);

                labelResultados.setText("Importação Cat52: Finalizando Processo.");
                progressBarAtividade1.setValue(100);

                progressBarAtividade2.setValue(100);

//                if (idImportacaoCat > 0) {
//
//

//
//                    
//
//                } else {
//
//                   // listaDuplicados = new HashMap<String,String>();
//                    labelResultados.setText("Importação Cat52: Finalizando Processo.");
//
//                    //txtAreaDuplicados.setText("Arquivo Duplicado: " + arquivo + "\n");
//                    listaDuplicados.put(idRegistroE01.replace("-", ""), arquivo);
//                    btDuplicado.setEnabled(true);
//                    btDuplicado.setText("Reprocessar Duplicados (" + listaDuplicados.size() + ")");
//
//                    txtAreaDuplicados.setText(txtAreaDuplicados.getText() + "Arquivo Duplicado: " + arquivo + "\n");
//
//                }
            }

        } catch (SQLException e) {
            txtAreaErros.setText(txtAreaErros.getText() + "Erro: " + e.getMessage() + "\n");
            MessagemErro erro = new MessagemErro(new ErrorInfo("Erro no Sistema", "Não é Possível Continuar, Sistema Inativo", null, "Fatal", e, Level.WARNING, null), 1);
        } catch (IOException e) {
            txtAreaErros.setText(txtAreaErros.getText() + "Erro: " + e.getMessage() + "\n");
            MessagemErro erro = new MessagemErro(new ErrorInfo("Erro no Sistema", "Não é Possível Continuar, Sistema Inativo", null, "Fatal", e, Level.WARNING, null), 1);
        } catch (Exception e) {
            txtAreaErros.setText(txtAreaErros.getText() + "Erro: " + e.getMessage() + "\n");
            MessagemErro erro = new MessagemErro(new ErrorInfo("Erro no Sistema", "Não é Possível Continuar, Sistema Inativo", null, "Fatal", e, Level.WARNING, null), 1);
        }
    }

    private void montaE00(List<String> listaE00) {

        try {

            for (String string : listaE00) {

                registroE00.setTipo(string.substring(0, 3));
                registroE00.setNumeroFabricacao(string.substring(3, 23));
                registroE00.setMfAdicional(string.substring(23, 24));
                registroE00.setNumeroUsuario(Integer.parseInt(string.substring(24, 26)));
                registroE00.setTipoEcf(string.substring(26, 33));
                registroE00.setMarca(string.substring(33, 53));
                registroE00.setModelo(string.substring(53, 73));
                registroE00.setCoo(Integer.parseInt(string.substring(73, 79)));
                registroE00.setNumeroAplicativo(Integer.parseInt(string.substring(79, 81)));
                registroE00.setCnpjCpf(string.substring(81, 95));
                registroE00.setIe(string.substring(95, 109));
                registroE00.setIm(string.substring(109, 123));
                registroE00.setSoftwareHouse(string.substring(123, 163));
                registroE00.setNomeAplicativo(string.substring(163, 203));
                registroE00.setVersaoAplicativo(string.substring(203, 213));
                registroE00.setLinha01(string.substring(213, 255));
                registroE00.setLinha02(string.substring(255, 297));

            }

        } catch (Exception e) {
            txtAreaErros.setText(txtAreaErros.getText() + "Erro: " + e.getMessage() + "\n");
            MessagemErro erro = new MessagemErro(new ErrorInfo("Erro no Sistema", "Não é Possível Continuar, Sistema Inativo", null, "Fatal", e, Level.WARNING, null), 1);
        }
    }

    private void montaE01(List<String> listaE01) {

        try {

            for (String string : listaE01) {

                registroE01.setTipo(string.substring(0, 3));
                registroE01.setNumeroFabricacao(string.substring(3, 23));
                registroE01.setMfAdicional(string.substring(23, 24));
                registroE01.setTipoEcf(string.substring(24, 31));
                registroE01.setMarca(string.substring(31, 51));
                registroE01.setModelo(string.substring(51, 71));
                registroE01.setVersaoSb(string.substring(71, 81));
                registroE01.setDataSb(formatDate.parse(string.substring(81, 89)));
                registroE01.setHoraSb(string.substring(89, 95));
                registroE01.setNumeroEcf(Integer.parseInt(string.substring(95, 98)));
                registroE01.setCnpj(string.substring(98, 112));
                registroE01.setComando(string.substring(112, 115));
                registroE01.setCrzInicial(Integer.parseInt(string.substring(118, 121)));
                registroE01.setCrzFinal(Integer.parseInt(string.substring(121, 127)));
                registroE01.setDataInicial(formatDate.parse(string.substring(127, 135)));
                registroE01.setDataFinal(formatDate.parse(string.substring(135, 143)));
                registroE01.setVersao(string.substring(143, 151));
                registroE01.setVersaoAroCotepe(string.substring(151, 166));

            }

        } catch (Exception e) {
            txtAreaErros.setText(txtAreaErros.getText() + "Erro: " + e.getMessage() + "\n");
            MessagemErro erro = new MessagemErro(new ErrorInfo("Erro no Sistema", "Não é Possível Continuar, Sistema Inativo", null, "Fatal", e, Level.WARNING, null), 1);
        }
    }

    private void montaE02(List<String> listaE02) {

        try {

            for (String string : listaE02) {

                registroE02.setIdImportacaoCat(idImportacaoCat);
                registroE02.setTipo(string.substring(0, 3));
                registroE02.setNumeroFabricacao(string.substring(3, 23));
                registroE02.setMfAdicional(string.substring(23, 24));
                registroE02.setModelo(string.substring(24, 44));
                registroE02.setCnpj(string.substring(44, 58));
                registroE02.setInscricaoEstadual(string.substring(58, 72));
                registroE02.setNomeContribuinte(string.substring(72, 112));
                registroE02.setEndereco(string.substring(112, 232));
                registroE02.setDataCadastro(formatDate.parse(string.substring(232, 240)));
                registroE02.setHoraCadastro(string.substring(240, 246));
                registroE02.setCro(Integer.parseInt(string.substring(246, 252)));
                registroE02.setGt(Integer.parseInt(string.substring(252, 270)));
                registroE02.setNumeroUsuario(Integer.parseInt(string.substring(270, 272)));
            }

            
            
        } catch (Exception e) {
            txtAreaErros.setText(txtAreaErros.getText() + "Erro: " + e.getMessage() + "\n");
            MessagemErro erro = new MessagemErro(new ErrorInfo("Erro no Sistema", "Não é Possível Continuar, Sistema Inativo", null, "Fatal", e, Level.WARNING, null), 1);
        }
    }

    private void montaE12(List<String> listaE12) {

        try {

            for (String string : listaE12) {

                RegistroE12 registroE12 = new RegistroE12();

                registroE12.setIdImportacaoCat(idImportacaoCat);
                registroE12.setTipo(string.substring(0, 3));
                registroE12.setNumeroFabricacao(string.substring(3, 23));
                registroE12.setMfAdicional(string.substring(23, 24));
                registroE12.setModelo(string.substring(24, 44));
                registroE12.setNumeroUsuario(Integer.parseInt(string.substring(44, 46)));
                registroE12.setCrz(Integer.parseInt(string.substring(46, 52)));
                registroE12.setCrz(Integer.parseInt(string.substring(52, 58)));
                registroE12.setCro(Integer.parseInt(string.substring(58, 64)));
                registroE12.setDataMovimento(new java.sql.Date(Integer.parseInt(string.substring(64, 68)),Integer.parseInt(string.substring(68, 70)),Integer.parseInt(string.substring(70, 72))));
                registroE12.setDataEmissao(new java.sql.Date(Integer.parseInt(string.substring(72, 76)),Integer.parseInt(string.substring(76, 78)),Integer.parseInt(string.substring(78, 80))));
                registroE12.setHoraEmissao(string.substring(80, 86));
                registroE12.setVendaBruta(Integer.parseInt(string.substring(86, 100)));
                registroE12.setIncidenciaDesconto(string.substring(100, 101));

                listaRegistroE12.add(registroE12);

            }
//
//            for (RegistroE12 r : listaRegistroE12) {
//         
//                con = Conexao.getCon();
//                PreparedStatement stmt = con.prepareStatement("select 'Esse ECF já foi lançado registro: ' +  convert(idImportacaoCat) as result from registroe12 where numero_fabricacao = " + r.getNumeroFabricacao()+ " and crz = " + r.getCrz() + " and coo =  " + r.getCoo() + " and cro = " + r.getCro() + " and data_movimento = " + r.getDataMovimento());
//                ResultSet rs = stmt.executeQuery();
//
//                while (rs.next()) {
//                    rs.getInt("result");
//                }
//
//            }
            
        } catch (Exception e) {
            txtAreaErros.setText(txtAreaErros.getText() + "Erro: " + e.getMessage() + "\n");
            MessagemErro erro = new MessagemErro(new ErrorInfo("Erro no Sistema", "Não é Possível Continuar, Sistema Inativo", null, "Fatal", e, Level.WARNING, null), 1);
        }

    }

    private void montaE13(List<String> listaE13) {

        try {

            for (String string : listaE13) {

                RegistroE13 registroE13 = new RegistroE13();

                registroE13.setTipo(string.substring(0, 3));
                registroE13.setNumeroFabricacao(string.substring(3, 23));
                registroE13.setMfAdicional(string.substring(23, 24));
                registroE13.setModelo(string.substring(24, 44));
                registroE13.setNumeroUsuario(Integer.parseInt(string.substring(44, 46)));
                registroE13.setCrz(Integer.parseInt(string.substring(46, 52)));
                registroE13.setTotalizadorParcial(string.substring(52, 59));
                registroE13.setValorAcumulado(Integer.parseInt(string.substring(59, 72)));

                listaRegistroE13.add(registroE13);

            }

        } catch (Exception e) {
            txtAreaErros.setText(txtAreaErros.getText() + "Erro: " + e.getMessage() + "\n");
            MessagemErro erro = new MessagemErro(new ErrorInfo("Erro no Sistema", "Não é Possível Continuar, Sistema Inativo", null, "Fatal", e, Level.WARNING, null), 1);
        }
    }

    private void montaE14(List<String> listaE14) {
        try {

            for (String string : listaE14) {

                RegistroE14 registroE14 = new RegistroE14();

                registroE14.setTipo(string.substring(0, 3));
                registroE14.setNumeroFabricacao(string.substring(3, 23));
                registroE14.setMfAdicional(string.substring(23, 24));
                registroE14.setModelo(string.substring(24, 44));
                registroE14.setNumeroUsuario(Integer.parseInt(string.substring(44, 46)));
                registroE14.setCcf(Integer.parseInt(string.substring(46, 52)));
                registroE14.setCoo(Integer.parseInt(string.substring(52, 58)));
                registroE14.setDataInicioEmissao(new java.sql.Date(Integer.parseInt(string.substring(58, 62)),Integer.parseInt(string.substring(62, 64)),Integer.parseInt(string.substring(64, 66))));
                registroE14.setSubTotal(Integer.parseInt(string.substring(66, 80)));
                registroE14.setDescontoSubTotal(Integer.parseInt(string.substring(80, 93)));
                registroE14.setIndicadorTipoDesconto(string.substring(93, 94));
                registroE14.setAcrescimo(Integer.parseInt(string.substring(94, 107)));
                registroE14.setIndicadorTipoAcrescimo(string.substring(107, 108));
                registroE14.setValorTotal(Integer.parseInt(string.substring(108, 122)));
                registroE14.setIndicadorCancelamento(string.substring(122, 123));
                registroE14.setCancelamento(Integer.parseInt(string.substring(123, 136)));
                registroE14.setOrdemDesconto(string.substring(136, 137));
                registroE14.setIndicadorCancelamento(string.substring(137, 177));
                registroE14.setCnpjCfpAdquirente(string.substring(177, 191));

                listaRegistroE14.add(registroE14);

            }

        } catch (Exception e) {
            txtAreaErros.setText(txtAreaErros.getText() + "Erro: " + e.getMessage() + "\n");
            MessagemErro erro = new MessagemErro(new ErrorInfo("Erro no Sistema", "Não é Possível Continuar, Sistema Inativo", null, "Fatal", e, Level.WARNING, null), 1);
        }
    }

    private void montaE15(List<String> listaE15) {
        try {

            for (String string : listaE15) {

                RegistroE15 registroE15 = new RegistroE15();

                registroE15.setTipo(string.substring(0, 3));
                registroE15.setNumeroFabricacao(string.substring(3, 23));
                registroE15.setMfAdicional(string.substring(23, 24));
                registroE15.setModelo(string.substring(24, 44));
                registroE15.setNumeroUsuario(Integer.parseInt(string.substring(44, 46)));
                registroE15.setCoo(Integer.parseInt(string.substring(46, 52)));
                registroE15.setCcf(Integer.parseInt(string.substring(52, 58)));
                registroE15.setNumeroItem(Integer.parseInt(string.substring(58, 61)));
                registroE15.setCodigoProdutoServico(string.substring(61, 75));
                registroE15.setDescricao(string.substring(75, 175));
                registroE15.setQuantidade(Integer.parseInt(string.substring(175, 182)));
                registroE15.setUnidade(string.substring(182, 185));
                registroE15.setValorUnitario(Integer.parseInt(string.substring(185, 193)));
                registroE15.setDesconto(Integer.parseInt(string.substring(193, 201)));
                registroE15.setAcrescimo(Integer.parseInt(string.substring(201, 209)));
                registroE15.setValorTotal(Integer.parseInt(string.substring(209, 223)));
                registroE15.setTotalizadorParcial(string.substring(223, 230));
                registroE15.setIndicadorCancelamento(string.substring(230, 231));
                registroE15.setQuantidadeCancelada(Integer.parseInt(string.substring(231, 238)));
                registroE15.setValorCancelamento(Integer.parseInt(string.substring(238, 251)));
                registroE15.setCancelamentoAcrescimo(Integer.parseInt(string.substring(251, 264)));
                registroE15.setIndicadorArredondamento(string.substring(264, 265));
                registroE15.setCasasDecimaisQuantidade(Integer.parseInt(string.substring(265, 266)));
                registroE15.setCasasDecimanisUnitario(Integer.parseInt(string.substring(266, 267)));

                listaRegistroE15.add(registroE15);

            }

        } catch (Exception e) {
            txtAreaErros.setText(txtAreaErros.getText() + "Erro: " + e.getMessage() + "\n");
            MessagemErro erro = new MessagemErro(new ErrorInfo("Erro no Sistema", "Não é Possível Continuar, Sistema Inativo", null, "Fatal", e, Level.WARNING, null), 1);
        }
    }

    private void montaE16(List<String> listaE16) {

        try {

            for (String string : listaE16) {

                RegistroE16 registroE16 = new RegistroE16();

                registroE16.setTipo(string.substring(0, 3));
                registroE16.setNumeroFabricacao(string.substring(3, 23));
                registroE16.setMfAdicional(string.substring(23, 24));
                registroE16.setModelo(string.substring(24, 44));
                registroE16.setNumeroUsuario(Integer.parseInt(string.substring(44, 46)));
                registroE16.setCoo(Integer.parseInt(string.substring(46, 52)));
                registroE16.setGnf(Integer.parseInt(string.substring(52, 58)));
                registroE16.setGrg(Integer.parseInt(string.substring(58, 64)));
                registroE16.setCdc(Integer.parseInt(string.substring(64, 68)));
                registroE16.setCrz(Integer.parseInt(string.substring(68, 74)));
                registroE16.setDenominacao(string.substring(74, 76));
                registroE16.setDataFinalEmissao(new java.sql.Date(Integer.parseInt(string.substring(76, 80)),Integer.parseInt(string.substring(80, 82)),Integer.parseInt(string.substring(82, 84))));
                registroE16.setHoraFinalEmissao(string.substring(84, 90));

                listaRegistroE16.add(registroE16);

            }

        } catch (Exception e) {
            txtAreaErros.setText(txtAreaErros.getText() + "Erro: " + e.getMessage() + "\n");
            MessagemErro erro = new MessagemErro(new ErrorInfo("Erro no Sistema", "Não é Possível Continuar, Sistema Inativo", null, "Fatal", e, Level.WARNING, null), 1);
        }
    }

    private void montaE21(List<String> listaE21) {

        try {

            for (String string : listaE21) {

                RegistroE21 registroE21 = new RegistroE21();

                registroE21.setTipo(string.substring(0, 3));
                registroE21.setNumeroFabricacao(string.substring(3, 23));
                registroE21.setMfAdicional(string.substring(23, 24));
                registroE21.setModelo(string.substring(24, 44));
                registroE21.setNumeroUsuario(Integer.parseInt(string.substring(44, 46)));
                registroE21.setCoo(Integer.parseInt(string.substring(46, 52)));
                registroE21.setCcf(Integer.parseInt(string.substring(52, 58)));
                registroE21.setGnf(Integer.parseInt(string.substring(58, 64)));
                registroE21.setMeioPagamento(string.substring(64, 79));
                registroE21.setValorPago(Integer.parseInt(string.substring(79, 92)));
                registroE21.setIndicadorEtorno(string.substring(92, 93));
                registroE21.setValorEtornado(Integer.parseInt(string.substring(93, 106)));

                listaRegistroE21.add(registroE21);
            }

        } catch (Exception e) {
            txtAreaErros.setText(txtAreaErros.getText() + "Erro: " + e.getMessage() + "\n");
            MessagemErro erro = new MessagemErro(new ErrorInfo("Erro no Sistema", "Não é Possível Continuar, Sistema Inativo", null, "Fatal", e, Level.WARNING, null), 1);
        }
    }

    private void montaEAD(List<String> listaEAD) {

        try {

            for (String string : listaEAD) {

                registroEAD.setTipo(string.substring(0, 3));
                registroEAD.setAssinatura(string.substring(3, 259));

            }

        } catch (Exception e) {
            txtAreaErros.setText(txtAreaErros.getText() + "Erro: " + e.getMessage() + "\n");
            MessagemErro erro = new MessagemErro(new ErrorInfo("Erro no Sistema", "Não é Possível Continuar, Sistema Inativo", null, "Fatal", e, Level.WARNING, null), 1);
        }
    }

    public void setProgressBar(JProgressBar progressBarAtividade1) {
        this.progressBarAtividade1 = progressBarAtividade1;
        this.progressBarAtividade1.setValue(12);
    }

    public void setProgressBar2(JProgressBar progressBarAtividade2) {
        this.progressBarAtividade2 = progressBarAtividade1;
        this.progressBarAtividade2.setValue(12);
    }

    public void setLabelResultados(JLabel lbImportacao) {
        this.labelResultados = lbImportacao;
        this.labelResultados.setText("Importação Cat52: Iniciando Processo de Importação.");
    }

    public void setBtDuplicado(JXHyperlink btDuplicado) {
        this.btDuplicado = btDuplicado;
    }

    public void setListaDuplicado(Map<String, String> listaDuplicados) {
        this.listaDuplicados = listaDuplicados;
    }

    public void setTxtAreaErros(JTextArea txtAreaErros) {
        this.txtAreaErros = txtAreaErros;
    }

    public void setTxtAreaDuplicados(JTextArea txtAreaDuplicados) {
        this.txtAreaDuplicados = txtAreaDuplicados;
    }
}
